package edu.scu.declaresys.dao.util;

import static edu.scu.declaresys.vo.Project.STATE_CITY_REQUEST_CANCEL_RCMD;
import static edu.scu.declaresys.vo.Project.STATE_COUNTY_REQUEST_CANCEL_RCMD;
import static edu.scu.declaresys.vo.Project.STATE_PASSED;
import static edu.scu.declaresys.vo.Project.STATE_REJECTED;
import static edu.scu.declaresys.vo.Project.STATE_REQUEST_MODIFY;
import static edu.scu.declaresys.vo.Project.STATE_UNAUDIT_MODIFIABLE;
import static edu.scu.declaresys.vo.Project.STATE_UNAUDIT_UNMODIFIABLE;
import static edu.scu.declaresys.vo.Project.STATE_UNRCMD_CITY;
import static edu.scu.declaresys.vo.Project.STATE_UNRCMD_COUNTY;
import static edu.scu.declaresys.vo.Project.STATE_UNRCMD_PROVINCE;

import java.util.HashSet;
import java.util.Set;

public class StateUtils
{
	private static final HashSet<Integer> allStates = new HashSet<Integer>();
	
	static 
	{
		allStates.add(STATE_UNRCMD_COUNTY);
		allStates.add(STATE_UNRCMD_CITY);
		allStates.add(STATE_COUNTY_REQUEST_CANCEL_RCMD);
		allStates.add(STATE_UNRCMD_PROVINCE);
		allStates.add(STATE_CITY_REQUEST_CANCEL_RCMD);
		allStates.add(STATE_REQUEST_MODIFY);
		allStates.add(STATE_UNAUDIT_MODIFIABLE);
		allStates.add(STATE_UNAUDIT_UNMODIFIABLE);
		allStates.add(STATE_PASSED);
		allStates.add(STATE_REJECTED);
	}
	
	public static Integer[] getStatesExcept(Integer[] states)
	{
		Set<Integer> inStates = new HashSet<Integer>();
		for(Integer s : states)
		{
			if(s != null)
			{
				inStates.add(s);
			}			
		}
		Set<Integer> retStates = new HashSet<Integer>(allStates);
		retStates.removeAll(inStates);
		Integer[] retArrStates = new Integer[retStates.size()];
		//
		return retStates.toArray(retArrStates);
	}
}
